package com.itheima.demo;

import java.util.ArrayList;
import java.util.Random;

/**
 * @author Zhang_Han
 * @version 1.0
 * @date 2020/7/14 17:12
 */
public class MyRunnable_004 implements Runnable {

    private ArrayList<String> list;

    private boolean flag = false;
    private boolean exit = false;

    Random r = new Random();

    public MyRunnable_004() {
        list = new ArrayList<>();
        list.add("宝马一辆");
        list.add("谢谢参与");
        list.add("谢谢参与");
        list.add("谢谢参与");
        list.add("谢谢参与");
        list.add("谢谢参与");
        list.add("谢谢参与");
        list.add("谢谢参与");
        list.add("谢谢参与");
        list.add("谢谢参与");
        list.add("谢谢参与");
    }

    @Override
    public void run() {
        while (true) {
            synchronized (this) {
                String name = Thread.currentThread().getName();
                if ("张三".equals(name)) {
                    if (flag) {
                        flag = false;
                        notifyAll();
                        //获取随机数
                        int i = r.nextInt(list.size());
                        //将获取到的随机数作为索引从list集合中获取元素
                        String str = list.remove(i);
                        if ("宝马一辆".equals(str)) {
                            System.out.println("恭喜张三抽得宝马一辆！！！");
                            exit = true;
                            break;
                        }
                        if (exit) {
                            break;
                        }
                        System.out.println(Thread.currentThread().getName() + "抽到的奖品是：" + str);

                    } else {
                        try {
                            wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                } else {
                    if (!flag) {
                        flag = true;
                        notifyAll();
                        //获取随机数
                        int i = r.nextInt(list.size());
                        //将获取到的随机数作为索引从list集合中获取元素
                        String str = list.remove(i);
                        if ("宝马一辆".equals(str)) {
                            System.out.println("恭喜李四抽得宝马一辆！！！");
                            exit = true;
                            break;
                        }
                        if (exit) {
                            break;
                        }
                        System.out.println(Thread.currentThread().getName() + "抽到的奖品是：" + str);

                    } else {
                        try {
                            wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
    }
}
